04 芯片介绍
04 芯片介绍芯片内核、外设、总线
1 ◾️芯片
1.1 芯片型号
STM32F103C8T6 是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器, 它的命名规则如下:
-
ST:指意法半导体
-
M:指定微处理器
-
32:表示计算机处理器位数
-
F103:是ST公司产品系列
-
ARM 公司在用Cortex命名,MCU内核并分成A、R和M三类
-
M系列有M0、M0+、M3、M4、M7
-
Cortex-M3是ARM公司推出MCU内核,ST公司在此内核的基础上完成了USART、DMA等外围电路的设计。
1.2 芯片架构

目前主要有两种最广泛 分别是 冯诺伊曼架构 和 哈佛架构,它们的区别在于:两者的 储存空间 以及 总线 对于 指令和数据 的划分方式不同
-
冯诺伊曼主张:指令与数据 共用存储空间也共用总线,这样使用起来更加灵活
-
而哈佛架构则主张: 指令与数据分开,指令它专属的存储空间也有它专属的总线 同理 数据也有它专属的存储空间和总线
STM32的架构采用的架构 不是严格将指令与数据分开的哈佛架构 而是一种 改良型的哈佛架构,这种架构它可以把程序中的一些常量数据放到flash里面,很显然比全部放到ram里面的成本要更低
-
冯・诺依曼架构: 指令、数据共用同一条总线、同一块存储空间
-
冯・诺依曼架构优势:结构简单、内存空间灵活, 主要应用于通用计算机(PC)
-
哈佛架构: 指令、数据完全分离:两套独立存储器 + 两套独立总线
-
哈佛架构优势:执行效率高、实时性强, 主要应用于微控制器(MCU)
1.3 芯片下载方式
-
SWD(Serial Wire Debug)下载 + 调试
-
工具:ST-Link
-
硬件连接:仅需 2 根线(SWDIO + SWCLK)+ 电源(3.3V)+ GND,无需占用额外引脚。
-
烧录软件:IDE 直烧(Keil MDK、STM32CubeIDE)
-
-
UART 串口下载(ISP 模式)仅下载
-
工具:无需仿真器,仅需 USB-TTL(CH340) 模块
-
硬件连接:UART1 的 TX/RX 引脚 + 电源 + GND,配合 BOOT0 引脚拉高进入 ISP 模式
-
烧录软甲:STM32CubeProgrammer(Windows/Linux 通用)
-
1.4 芯片启动方式
芯片启动方式:STM32官方提供了3种程序加载方式
-
1 Flash 启动 (日常开发)
-
2 系统存储器启动 进入芯片内置的 ST Bootloader(串口下载模式)
-
3 内置 SRAM 启动 调试时直接从 RAM 运行代码(极少用)
-
本教程采用STLINK工具, 将代码通过IDE工具直接烧录进芯片的Flash里面
-
所以硬件上直接将BOOT0下拉到地, 默认从Flash启动程序
1.5 芯片寻址方式
这个是内存映射图 芯片内部的存储空间有很多,为了让CPU精确的找到这个存储空间就需要给每一个存储空间一个专属的编号,而这个编号也就是这些存储空间的地址
-
STM32是32位的处理器,本质的意思就在于 它一次寻址范围最高32位
-
32位一共能列出 2的32次方个不同的编号 用科学计数法表示也就是4乘10的9次方 也就是4GB
- 比如说:从0X0000到0x2000这部分编号 给了这些部件
- 其中从0x0800到0x0801给到了flash
- 而中断向量表就放在flash的开头 也就是0x0800往后的一部分
- 向量表往后存的就是我们写的程序
- 从0x4000往后的一小部分编号 给到了外设寄存器
2 📊芯片内部资源简介
2.1 芯片总线
除了上述Cortex-M3 内核内部的三条 “专用总线”, 其他的总线也需要我们了解下:
-
DMA总线: 实现 “内存→外设”“外设→内存”“内存→内存” 的高速数据搬运,无需 CPU内核参与, 可以并行完成任务
-
Bus Matrix(总线矩阵): 连接所有总线, 是所有总线的 “交通枢纽”, 定义好了地址与各外设的映射关系, CPU可直接通过地址去与外设交互
-
AHB 系统总线: 连接所有高速设备 + 桥接低速总线, 是整个APB1/APB2外设系统的 “根总线”
-
RCC(复位与时钟控制)整个时钟树的源头,必须挂高速总线
-
DMA1 / DMA2直接连 AHB,才能高速搬运数据
-
-
APB1/APB2 外设总线:通过Bridge1/Bridge2桥接器, 把高速 AHB 总线转换为低速 APB 总线,挂载中低速外设。
-
APB1(最高36MHz) USART2/3、SPI2/3、I2C1/2、TIM2~7、USB、CAN 等中低速外设
-
APB2(最高72MHz) GPIO、USART1、SPI1、ADC1/2、TIM1/8 等高速外设
-
2.2 芯片外设
APB1 总线外设(中低速,最高 36MHz)
-
DAC数模转换器,把数字信号转换成模拟电压输出 -
I2C1/I2C2两线制串行总线,用于连接 EEPROM、传感器等外设 -
UART4/UART5异步串口通信 -
USART2/USART3同步 / 异步串口通信 -
SPI2/I2S、SPI3/I2S同步串行接口(SPI)+ 音频接口(I2S) -
WWDG/IWDG窗口看门狗 / 独立看门狗,防止程序跑飞死机 -
RTC实时时钟,在掉电后也能计时,提供日历、闹钟功能 -
TIM2~TIM7通用定时器,用于定时、计数、PWM 输出、输入捕获
APB2 总线外设(高速,最高 72MHz)
-
ADC1/2/3模数转换器,把模拟电压转换成数字信号,用于采集传感器数据 -
USART1同步 / 异步串口通信 -
SPI1高速同步串行接口,可驱动 Flash、OLED 屏等外设 -
TIM1/TIM8高级控制定时器,支持 PWM 输出、电机控制、死区生成等 -
GPIOA/B/C/D/E/F/G通用输入输出口,芯片所有引脚的控制单元 -
AFIO复用功能 IO 控制器,用于配置引脚的外设复用映射、外部中断引脚选择 -
EXTI外部中断控制器,可把 GPIO 引脚配置成外部中断触发源